package main

import (
	"fmt"
	"math"
	"math/cmplx"
)

// 定义变量的方法 1
func variableZeroValue() {
	// a := 100
	// fmt.Println(a)
	var a int
	var s string
	fmt.Printf("%d %q\n", a, s)
}

// 定义变量加初始化变量
func variableInitalValue() {
	var a int = 3
	var s string = "abcs"
	fmt.Println(a, s)
}

// 定义变量省略类型，并初始化变量
func variableTypeDeduction() {
	var a = 3
	var s = "abcd"
	fmt.Println(a, s)
}

// 变量可以放在一起定义， 赋值也可以同时进行
func variableTypeDeductionShort() {
	var a, s, d = 3, "absc", true
	fmt.Println(a, s, d)
}

// var 关键字省略，可以使用 := 来代替， 在全局变量中，不能使用 := 来使用，
// var（） 可以集中定义变量
func variableShort() {
	a, s, d := 3, "strings", true
	fmt.Println(a, s, d)
}

// 欧拉公式
func euler() {
	fmt.Print(cmplx.Exp(1i*math.Pi) + 1)
	fmt.Print(cmplx.Pow(math.E, 1i * math.Pi) + 1)
}

func main() {
	fmt.Println("hello word")
	variableZeroValue()
	variableInitalValue()
	variableTypeDeduction()
	variableTypeDeductionShort()
	variableShort()
	euler()
}
